The present invention relates to virtual machine optimization, and more specifically, to optimizing the use of available resources through sizing and consolidating virtual machines based on projected performance metrics.
A contemporary virtual machine (VM) is a software implementation of a machine (i.e., a computer) that executes programs like a physical machine. The VM typically emulates a physical computing environment, but requests for central processing unit (CPU), memory, hard disk, network and other hardware resources are managed by a virtualization layer which translates these requests to the underlying physical hardware. VMs are created within a virtualization layer, such as a hypervisor or a virtualization platform that runs on top of a client or server operating system. The virtualization layer is typically used to create many individual, isolated VMs within a single, physical machine. Multiple VMs are typically used in server consolidation, where different services that were previously run on individual machines are instead run in isolated VMs on the same physical machine. Contemporary VMs may be moved, copied, and reassigned between host servers to improve hardware resource utilization.
Contemporary cloud computing providers allow a VM to be managed over the Internet across a number of hardware devices while only allocating as much space as needed at any one time. Typically, cloud computing providers offer a tiered pricing subscription plan for users to rent VMs on which to run their own computer applications. Users typically choose from a number of different VM configurations to meet their computing needs. For example, at each increasing price tier, the CPU cores, memory, disk space, and network bandwidth of the VM configuration are generally increased to minor the increased resources provided. This allows a user to select and pay for a VM configuration that meets the user's target resource demands.